import type { Preview } from "@storybook/vue3-vite";
import { h } from "vue";
import "./index.scss";
import "@/style/var.scss";
import { emojiMap } from "@/components/Emo-Icon/EmojiList";

const preview: Preview = {
  // 全局 decorator：给所有 story 统一注入
  decorators: [
    (storyFn) => ({
      setup() {
        // 在子组件树最顶层统一 provide
        return () =>
          h(
            "div", // 任意根节点
            {},
            h(storyFn(), {}, {}) // 渲染原来的 story
          );
      },
      provide: {
        emojiMap, // 全局注入
      },
    }),
  ],

  parameters: {
    // controls（Controls 面板）的自动识别规则
    controls: {
      matchers: {
        // 如果 argType 名称以 background 或 color 结尾 → 在 Controls 面板用「颜色选择器」
        color: /(background|color)$/i,
        // 如果 argType 名称以 Date 结尾 → 用「日期选择器」
        date: /Date$/i,
      },
    },
    docs: {
      source: {
        type: "code",
        excludeDecorators: false,
        // 源码语言，影响语法高亮
        language: "html",
        // 是否显示源码面板
        state: "open", // 'open' | 'closed'
        // 是否格式化代码
        format: true,
      },
    },

    // a11y（@storybook/addon-a11y）的行为
    a11y: {
      // 'todo'   仅在测试 UI 里列出违规（不阻断 CI）
      // 'error'  CI 中若有违规则直接失败
      // 'off'    完全跳过无障碍检查
      test: "todo",
    },
  },
};

export default preview;
